package com.jumi.microservice.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jumi.microservice.domain.Account;
import com.jumi.microservice.domain.Priority;
import com.jumi.microservice.domain.PriorityCheckPo;
import com.jumi.microservice.domain.temp.PriorityTemp;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 权限表 Mapper 接口
 * </p>
 *
 * @author liuz
 * @since 2020-07-18
 */
public interface PriorityMapper extends BaseMapper<Priority> {

    /**
     * 获取子菜单及孙子菜单
     * @param id 父id
     * @return
     */
    List<PriorityTemp> selectChildren(@Param("id") Long id);

    /**
     * 根据登录用户获取菜单
     * @param id 用户id
     * @param pid 模块或父级id
     * @return
     */
    List<Priority> authorizeList(@Param("id") Long id, @Param("pid") Long pid);

    /**
     * 根据用户id获取所有的绑定菜单id
     * @param id 用户id
     * @return
     */
    List<Integer> selectAllPriByAccountId(@Param("id") Long id);

    /**
     * 根据用户id获取所有的绑定菜单标识
     * @param id
     * @return
     */
    List<String> selectHasP(@Param("id") Long id);

    /**
     * 获取所有子菜单
     * @param id 主键id
     * @return
     */
    List<PriorityCheckPo> selectChildList(@Param("id")Long id);

    /**
     * 获取父级下所有节点
     * @param id
     * @return
     */
    List<PriorityCheckPo> selectAllChildList(@Param("id")Long id);

    /**
     * 获取所有父级菜单
     * @param id
     * @return
     */
    List<PriorityCheckPo> selectParentList(@Param("id")Long id);

    /**
     * 获取父级菜单名称
     * @param id 主键id
     * @return
     */
    String selectParentMenuById(@Param("id")Long id);

    /**
     * 根据父id获取子菜单(角色操作使用)
     * @param id 父级菜单id
     * @return
     */
    List<Priority> selectChild4Role(@Param("id")Long id);
}
